/* controller 翻译过来：控制器，主要是负责业务代码。为了后期的维护和新功能的增加，不建议把 routes下的文件写的过于臃肿。所以减负 */
/* 文件：业务名称Controller.js */
/* 这里写我们在 routers/news.js里面的路由对应的业务代码 */
const newsModel = require('../models/news.js');
const  moment = require('moment');

/* 类名：文件名的大驼峰 */
class NewsController {

    static getNewsList = async (req, res) => {

 
        /* http://localhost:3000/admin/news/list?page=1&size=2 */
        let {page = 1, size = 7} = req.query;
        // res.json( req.query);
        page = parseInt(page);
        size = parseInt(size);
        // let count = await newsModel.count();
        let count = await newsModel.countDocuments();
        //Collection.countDocuments count方法已被弃用，改用countDocuments方法
        let offset = (page - 1) * size;
        let totalPage = Math.ceil(count / size); // 小数 11条/2条 = 5.5 向上取整 5.3 = 6

        const infos = await newsModel.aggregate([
            {
                $skip: offset
            },
            {
                $limit: size
            },
            {
                /* 这个我们称之为联表操作。我们现在是新闻表（cateId）要和分类表(_id)产生联系*/
                $lookup:
                    {
                        /*要关联的表 category*/
                        from: "category",
                        /*自己表里面和别的表产生关系的id*/
                        localField: "cateId",
                        /*关联表的id*/
                        foreignField: "_id",
                        /*查询到的关联信息的key值*/
                        as: "cateInfo"
                    }
            }]);


        // console.log(infos);
        // console.log('page, size, count, totalPage', page, size, count, totalPage);

        res.render('news-list', {page, size, count, totalPage, title: '新闻资源的展示', infos, moment});


    }


}

module.exports = NewsController;